package com.itheima.homework;

import java.util.Scanner;

/**
 * @Author 王加鑫
 * @Date 2021/4/27 19:41
 * @Version 1.0
 * 7、【编号：809】 我国的居民身份证号码，由由十七位数字本体码和一位数字校验码组成。
 * 请定义方法判断用户输入的身份证号码是否合法，并在主方法中调用方法测试结果。
 * 规则为：号码为18位，不能以数字0开头，前17位只可以是数字，最后一位可以是数字或者大写字母X。
 */
public class Day08HomeWork07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入身份证号码:");
        String s = sc.nextLine();
        //转化位数组
        char[] charArray = s.toCharArray();
        //计数器
        int count = 0;
        /*
        当字符串长度为18并且首字母不为0的时候
         */
        if(s.length() == 18 && !s.startsWith("0")){
            /*
            循环的作用是判断前17位是否为数字
             */
            for (int i = 0; i < charArray.length-1; i++) {
                if(charArray[i] >= '0' && charArray[i] <= '9'){
                    //如果是数字的话,计数器加1
                    count++;
                }
            }
            /*
            判断前17位是否为数字并且最后一位数字要么是数字要么是大写字母X
             */
            if(charArray[charArray.length-1] >= '0' && charArray[charArray.length-1] <= '9' && count == 17 || s.endsWith("X")){
                System.out.println(s+"身份证号码正确");
            }else {
                System.out.println("您输入的身份证号码有误,前17位不为数字,最后一位不是数字或者字母,请重新输入!");
            }
        }else {
            System.out.println("您输入的身份证号码有误,可能首位字母为0或者长度不对!,请重新输入!");
        }
    }
}
